package com.enjava;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.component.html.HtmlInputText;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;

@ManagedBean(name="listadoCursosBean")
@RequestScoped
public class ListadoCursosRequestBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	List<Curso> cursos = new ArrayList<Curso>();
	
	@ManagedProperty(name = "listadoWizardBean", value = "#{wizardBean}")
	WizardBean listadoWizardBean;
	
	HtmlDataTable tabla =  new HtmlDataTable();
	HtmlInputText texto = new HtmlInputText();
	
	public HtmlInputText getTexto() {
		return texto;
	}

	public void setTexto(HtmlInputText texto) {
		this.texto = texto;
	}

	public List<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(List<Curso> cursos) {
		this.cursos = cursos;
	}

	public HtmlDataTable getTabla() {
		return tabla;
	}

	public void setTabla(HtmlDataTable tabla) {
		this.tabla = tabla;
	}

	public WizardBean getListadoWizardBean() {
		return listadoWizardBean;
	}

	public void setListadoWizardBean(WizardBean listadoWizardBean) {
		this.listadoWizardBean = listadoWizardBean;
	}

	public ListadoCursosRequestBean() {
		
	}
	
	
	
	@PostConstruct
	public void inicializa(){
		EntityManager em = listadoWizardBean.getEmf().getEM();
		
		EntityTransaction transaccion = em.getTransaction();
		transaccion.begin();

		Query sql = em.createQuery("SELECT Curso FROM Curso Curso");
		cursos = sql.getResultList();
		
		transaccion.commit();
	}
	
	
	public void escuchaEnlace(ActionEvent actionEvent){
		Object rowData = getTabla().getRowData();
		Curso p=(Curso) rowData;
		
		listadoWizardBean.setCursoEdicion(p);
		System.out.println(p.getNombre());
		System.out.println(p.getId());

	}

	
	public String redirecciona(){
		System.out.println("pasa por redirecciona");
		return "editarCurso";
	}
	
	
	public String persisteCambios(){
		
		
		EntityManager em = listadoWizardBean.getEmf().getEM();
		
		EntityTransaction transaccion = em.getTransaction();
		transaccion.begin();
		em.merge(listadoWizardBean.cursoEdicion);
		transaccion.commit();
		
		transaccion.begin();
		Query sql = em.createQuery("SELECT Curso FROM Curso Curso");
		cursos = sql.getResultList();
		transaccion.commit();
		
		return "editarCursoTabla";
	}
	
	public void buscaDinamica(AjaxBehaviorEvent event){
		EntityManager em = listadoWizardBean.getEmf().getEM();
		
		EntityTransaction transaccion = em.getTransaction();
		transaccion.begin();
		Query sql;
		if (texto.getValue().equals("")){
			sql = em.createQuery("SELECT Curso FROM Curso Curso");
		} else {
			sql = em.createQuery("SELECT Curso FROM Curso Curso where Curso.nombre like '" +  texto.getValue().toString() + "%'");
		}
		
		cursos = sql.getResultList();
		transaccion.commit();
	}
	

}
